package com.net.xpay.web.vo;

import com.net.xpay.common.enums.user.ServicePayMode;
import com.net.xpay.core.enums.PayeeType;
import com.net.xpay.core.enums.SafePayBatchStatus;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 2020/5/11 15:50

 */
@Getter
@Setter
@NoArgsConstructor
public class SafePayBatchVo {
    @ApiModelProperty(notes = "id")
    private Long id;  //唯一Id

    @ApiModelProperty(notes = "创建时间")
    private LocalDateTime createTime;

    @ApiModelProperty(notes = "用户id")
    private Long userId;

    @ApiModelProperty(notes = "免费 新用户测试送的 不扣钱")
    private Boolean free;

    @ApiModelProperty(notes = "收款类型 1.支付宝  2.银行 默认支付宝1")
    private PayeeType type;

    @ApiModelProperty(notes = "支付宝账号")
    private String alipayNickName;

    @ApiModelProperty(notes = "上传的文件保存链接")
    private String fileUrl;

    @ApiModelProperty(notes = "文件过期时间")
    private LocalDateTime fileExpired;

    @ApiModelProperty(notes = "导入的商户的批次号 必选")
    private String importBatchNo;

    @ApiModelProperty(notes = "是否需要短信验证")
    private Boolean needEnsure;

    @ApiModelProperty(notes = "预扣的服务费 分")
    private Long servicePrice;

    @ApiModelProperty(notes = "失败退款的服务费 分")
    private Long refund;

    @ApiModelProperty(notes = "服务费退款明细Id")
    private Long refundId;

    @ApiModelProperty(notes = "除去退款后的最终服务费 分")
    private Long finalServicePrice;

    @ApiModelProperty(notes = "收费模式")
    private ServicePayMode mode;

    @ApiModelProperty(notes = "服务费收费比例")
    private BigDecimal serviceRatio;

    @ApiModelProperty(notes = "服务费单价 分")
    private Long serviceUnitPrice;

    @ApiModelProperty(notes = "批次总金额，单位为元，精确到小数点后两位，取值范围[0.01,9999999999999.99]  必选")
    private BigDecimal totalTransAmount;

    @ApiModelProperty(notes = "批次总笔数 10 必选")
    private Long totalCount;

    @ApiModelProperty(notes = "成功金额 单位为元")
    private BigDecimal successAmount;

    @ApiModelProperty(notes = "成功笔数")
    private Long successCount;

    @ApiModelProperty(notes = "失败金额")
    private BigDecimal failedAmount;

    @ApiModelProperty(notes = "失败笔数")
    private Long failCount;

    @ApiModelProperty(notes = "状态")
    private SafePayBatchStatus status;

    @ApiModelProperty(notes = "开始时间")
    private LocalDateTime startTime;

    @ApiModelProperty(notes = "完成时间")
    private LocalDateTime endTime;

    public static SafePayBatchVo getInstance() {
        return new SafePayBatchVo();
    }
}
